package com.upeoe.shiro.chapter5.dao;

import com.upeoe.shiro.chapter5.entity.User;

import java.util.Set;

/**
 * @author ven_hxz
 * @create 2016-07-05 上午10:39
 */
public interface UserDao {
    /**
     * 创建用户
     *
     * @param user 用户对象
     * @return 创建后的用户对象
     */
    User createUser(User user);

    /**
     * 修改用户信息
     *
     * @param user 用户对象
     */
    void updateUser(User user);

    /**
     * 删除用户
     *
     * @param userId 用户ID
     */
    void deleteUser(Long userId);

    /**
     * 添加 用户-角色 关系
     *
     * @param userId  用户ID
     * @param roleIds 角色IDs
     */
    void addRelationRoles(Long userId, Long... roleIds);

    /**
     * 移除 用户-角色 关系
     *
     * @param userId  用户ID
     * @param roleIds 角色IDs
     */
    void removeRelationRoles(Long userId, Long... roleIds);

    /**
     * 根据用户ID查找用户
     *
     * @param userId 用户ID
     * @return 用户对象
     */
    User findUserById(Long userId);

    /**
     * 根据用户名查找用户
     *
     * @param username 用户名
     * @return 用户对象
     */
    User findByUsername(String username);

    /**
     * 根据用户名查找其拥有角色
     *
     * @param username 用户名
     * @return 角色集合
     */
    Set<String> findRoles(String username);

    /**
     * 根据用户名查找其权限
     *
     * @param username 用户名
     * @return 权限集合
     */
    Set<String> findPermissions(String username);
}
